package com.doit.day01;

import redis.clients.jedis.Jedis;

import java.util.Random;
import java.util.Scanner;

/**
 * 需求是什么？ 要干嘛 ==》 使用redis模拟手机验证码发送，验证码有效期60s，验证验证码输入不能超过3次，超过3次今天就没机会了
 * 1、需要一个redis的连接
 * 2、需要发送验证码==》模拟一个验证码 ==》 写个方法返回一个随机的验证码
 * 3.key   value  手机号   value 验证码  set ==》 设置过期时间
 * 4.让用户输入验证码==》 去比较输入的对不对
 */

public class _03_手机验证码的案例 {
    public static void main(String[] args) throws InterruptedException {
        Jedis jedis = new Jedis("linux01", 6379);
        Scanner sc = new Scanner(System.in);
        System.out.println("在一个月黑风高的夜晚，前进准备进入某个app,正在注册账号，需要发送验证码！");
        Thread.sleep(1000);
        System.out.println("客官您好，请输入您的手机号！爱你哦~~~~");
        String phone = sc.next();
        //TODO 验证一下手机号对不对
        String regex = "^((13[0-9])|(14[5,6,7,9])|(15[^4])|(16[5,6])|(17[0-9])|(18[0-9])|(19[1,8,9]))\\d{8}$";
        boolean flag = phone.matches(regex);
        //生成code
        String code = getCode();
        //将验证码写入到redis中，并且设置过期时间为60s
        jedis.setex(phone,60,code);
        System.out.println("验证码已经发送至您的手机，60s有效~~~~");

        System.out.println("客官您好，请输入您的验证码！爱你哦~~~~");
        String yourCode = sc.next();

        int cnt = 3;
        while (cnt>1){
            if (yourCode.equals(jedis.get(phone))){
                System.out.println("尽情享受吧！！！！");
            }else {
                //todo 需要你补充完整只能够验证三次
                System.out.println("请重新输入！！！");
                yourCode = sc.next();
            }
            cnt --;

        }



    }
//生成随机的6位数验证码
    public static String getCode(){
        Random random = new Random();
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < 6; i++) {
            int num = random.nextInt(10);
            sb.append(num);
        }
        return sb.toString();
    }
}
